#ifndef _LOG_H
#define _LOG_H

#include "head.h"

// 日志级别定义
#define LOG_DEBUG 1
#define LOG_INFO  2
#define LOG_WARN  3
#define LOG_ERROR 4

// 当前日志级别（可以通过外部配置或命令行参数设置）
#ifndef LOG_LEVEL
#define LOG_LEVEL LOG_DEBUG
#endif

// 日志文件路径
#define LOG_FILE "app.log"



#define LOG(level, format, ...) \
    do { \
        if (level >= LOG_LEVEL) { \
            log_message(level, __FILE__, __LINE__, format, ##__VA_ARGS__); \
        } \
    } while (0)



// 定义不同级别的日志宏
#define DEBUG(format, ...) LOG(LOG_DEBUG, format, ##__VA_ARGS__)
#define INFO(format, ...)  LOG(LOG_INFO,  format, ##__VA_ARGS__)
#define WARN(format, ...)  LOG(LOG_WARN,  format, ##__VA_ARGS__)
#define ERROR(format, ...) LOG(LOG_ERROR, format, ##__VA_ARGS__)

char* get_timestamp(char *buffer, size_t buffer_size);
void log_message(int level, const char *file, int line, const char *format, ...);


#endif